from pydantic import BaseModel


class OcrRectRequestV0(BaseModel):
    device_id: str
    left: int
    top: int
    right: int
    bottom: int

class DeviceClickRequestV0(BaseModel):
    """
    设备点击请求的模型类，用于封装设备点击操作所需的参数。
    """
    device_id: str
    """设备的唯一标识符，用于指定要操作的设备。"""
    x: int
    """点击位置的 x 坐标，以设备屏幕左上角为原点。"""
    y: int
    """点击位置的 y 坐标，以设备屏幕左上角为原点。"""

class DevicSwipeRequestV0(BaseModel):
    """
    设备滑动请求的模型类，用于封装设备滑动操作所需的参数。
    """
    device_id: str
    """设备的唯一标识符，用于指定要操作的设备。"""
    start_x: int
    """滑动起始位置的 x 坐标，以设备屏幕左上角为原点。"""
    start_y: int
    """滑动起始位置的 y 坐标，以设备屏幕左上角为原点。"""
    end_x: int
    """滑动结束位置的 x 坐标，以设备屏幕左上角为原点。"""
    end_y: int
    """滑动结束位置的 y 坐标，以设备屏幕左上角为原点。"""
    duration: int
    """滑动的持续时间，单位为毫秒。"""


class DeviceTypeKeyCodeRequestV0(BaseModel):
    """
    设备输入按键请求的模型类，用于封装设备输入按键操作所需的参数。
    """
    device_id: str
    """设备的唯一标识符，用于指定要操作的设备。"""
    keycode: int
    """要输入的按键码。"""
    action: int
    """按键动作，0 表示按下，1 表示释放。"""
    repeat: int
    """按键重复次数。"""
class DeviceTypeTextRequestV0(BaseModel):
    """
    设备输入文本请求的模型类，用于封装设备输入文本操作所需的参数。
    """
    device_id: str
    """设备的唯一标识符，用于指定要操作的设备。"""
    text: str
    """要输入的文本。"""
class DeviceTypeTextWithPositionRequestV0(BaseModel):
    """
    设备输入文本请求的模型类，用于封装设备输入文本操作所需的参数。
    """
    device_id: str
    """设备的唯一标识符，用于指定要操作的设备。"""
    text: str
    """要输入的文本。"""
    x: int
    """输入文本的 x 坐标，以设备屏幕左上角为原点。"""
    y: int
class DeviceAppInfoRequestV0(BaseModel):
    """
    设备应用信息请求的模型类，用于封装设备应用信息操作所需的参数。
    """
    device_id: str
    """设备的唯一标识符，用于指定要操作的设备。"""
    package_name: str
    """应用的包名。"""

class DeviceAppOperationRequestV0(BaseModel):
    """
    设备应用操作请求的模型类，用于封装设备应用操作所需的参数。
    """
    device_id: str
    """设备的唯一标识符，用于指定要操作的设备。"""
    package_name: str
    """应用的包名。"""
    activity_name: str
    """应用的活动名。"""
    action: str
    """要执行的操作，例如启动、停止等。"""
